在專案剛開始的時候,可能會使用到 “scaffold” 來建立檔案,方法非常簡單使用rails g scaffold
指令。但是這個指令到底做了什麼事?
“scaffold” 是一個自動產生 rails 專案檔案基礎結構的指令。指令會產生這些檔案:
建立網頁書店專案的例子會像這樣:
rails g scaffold books
接下來會看到很多程式碼在終端機跑,那些程式碼就是檔案產生的細節。會產生BooksController
、Book model
、resources :books
路徑會產生在你的config/routes.rb
檔案裡、一系列測試相關的檔案,當然還有 view。
如果想要取消剛剛用“scaffold”指令做出來的東西,可以使用下面的指令:
rails d scaffold books
“d” 表示 “destroy”
把 “d” 這件事記住,這個指令可以刪除由“scaffold”產生的檔案
在開始執行 “scaffold” 指令產生的程式碼之前必須要先執行 migration 來更新你 database 的 schema,使用rails db:migrate
指令。
如果沒有錯誤訊息出現,就代表專案可準備開始了!已經有了基本架構的 rails 應用程式,接下來就可以執行Run rails server
,打開瀏覽器連到localhost:3000/books
就可以看到畫面了。
model 只有 timestamp 欄位,代表只能記錄關於書的 timestamp (建立的時間或更新的時間)。
“scaffold”如何產生額外的檔案:
rails g scaffold books title:string author:string publication_year:integer
如果像這樣產生“scaffold”會得到三個欄位一個 title、author 跟一個 publication_year。
建立一個新的 migration
rails g migration.
可以使用這個 migration 來建立個別的元件,像是 controllers
rails g controller Fruit
rails g model Fruit name:string color:string (creates model + migration)
rails g migration CreateBook title:string year:integer (creates migration only)
使用 “scaffold” 最大的好處是所有檔案都會依照 rails 慣例來命名,這就可以避免奇怪的錯誤訊息,也可以省下很多手動產生檔案的時間。請試著練習刪除自動產生但是用不到的檔案,在使用像是 “g controller” 看看終端機裡面程式碼會顯示產生了哪些檔案,不用的就刪除吧。